//配置axios基地址
axios.defaults.baseURL = "https://hmajax.itheima.net"
//公共的提示框函数
// 2.1先生成实例对象
const showToast = (msg) => {
  const mytoast = document.querySelector('.my-toast')
  const toastobj = new bootstrap.Toast(mytoast)
  toastobj.show()
  // 2.2 让提示框组件内容改变
  document.querySelector('.toast-body').innerHTML = msg
}
// 3.公共的token验证模块
const checkToken = () => {
  // 3.1先去本地存储获取token
  const { token } = JSON.parse(localStorage.getItem('userMsg'))
  if (!token) {
    // 提示用户登录
    showToast('请先登录')
    setTimeout(() => {
      location.href = './login.html'
    }, 1500)
  }
}
// 4.公共的渲染函数，回显用户名
const renderUname = () => {
  const { username } = JSON.parse(localStorage.getItem('userMsg'))
  // console.log(username);
  if (username) {
    document.querySelector('.username').innerHTML = username
  }
}
// 5.退出登录模块 清除本地缓存
const logout = () => {
  document.querySelector('#logout').addEventListener('click', e => {
    // 5.1清除本地存储
    localStorage.removeItem('userMsg')
    // 5.2提示用户
    showToast('退出成功')
    // 5.3 跳转首页
    setTimeout(() => {
      location.href = './login.html'
    }, 1500)
  })
}
// 6.请求拦截器 每次请求发送之前，都会经过这个处理函数
// 添加请求拦截器
axios.interceptors.request.use(config => {
  // 在发送请求之前做些什么
  // 只有有了token才添加到请求头
  /* const { token } = localStorage.getItem('userMsg') ? JSON.parse(localStorage.getItem('userMsg')) : {}
  if (token) {
    config.headers['Authorization'] = token
  } */
  config.headers['Authorization'] = JSON.parse(localStorage.getItem('userMsg')).token
  return config
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error)
});

// 7.响应拦截器
// 添加响应拦截器
axios.interceptors.response.use(response => {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  // 数据剥离
  return response.data
}, error => {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  console.log(err)
  if (err.response.status === 401) {
    //token过期或被篡改
    showToast('您的登录信息已过期，请重新登录')
    //清除存储数据
    localStorage.removeItem('userMsg')
    //跳转登录页
    setTimeout(() => {
      location.href = './login.html'
    }, 1500)
  }
  return Promise.reject(error)
})